<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  
  <title>项目过程分析 | Hui</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="项目:1、软件开发的过程:在面试时说明自己参与了某个项目的某个模块从需求到设计到开发的所有过程。1、需求分析(25-30%):一定客户签字认可，在合同要说明验收时以需求说明书的内容为准，若有改动，需与商务另行商议。成果：需求说明书，具体内容如下:demo(界面原型):需求的可视化需求特征列表:简要的说明系统的功能，确定优先级及风险度用例图:说明系统整体的功能用例说明:1、用流程图(活动图)说明2">
<meta property="og:type" content="article">
<meta property="og:title" content="项目过程分析">
<meta property="og:url" content="http://mhuihui.oschina.io/m-pages/2017/01/10/项目过程分析/index.html">
<meta property="og:site_name" content="Hui">
<meta property="og:description" content="项目:1、软件开发的过程:在面试时说明自己参与了某个项目的某个模块从需求到设计到开发的所有过程。1、需求分析(25-30%):一定客户签字认可，在合同要说明验收时以需求说明书的内容为准，若有改动，需与商务另行商议。成果：需求说明书，具体内容如下:demo(界面原型):需求的可视化需求特征列表:简要的说明系统的功能，确定优先级及风险度用例图:说明系统整体的功能用例说明:1、用流程图(活动图)说明2">
<meta property="og:image" content="https://static.hinpc.com/image/2016/201611-ipad-605420_1920.jpg!width600">
<meta property="og:updated_time" content="2017-02-10T03:36:00.313Z">
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="项目过程分析">
<meta name="twitter:description" content="项目:1、软件开发的过程:在面试时说明自己参与了某个项目的某个模块从需求到设计到开发的所有过程。1、需求分析(25-30%):一定客户签字认可，在合同要说明验收时以需求说明书的内容为准，若有改动，需与商务另行商议。成果：需求说明书，具体内容如下:demo(界面原型):需求的可视化需求特征列表:简要的说明系统的功能，确定优先级及风险度用例图:说明系统整体的功能用例说明:1、用流程图(活动图)说明2">
<meta name="twitter:image" content="https://static.hinpc.com/image/2016/201611-ipad-605420_1920.jpg!width600">
  
    <link rel="alternate" href="/atom.xml" title="Hui" type="application/atom+xml">
  
  
    <link rel="icon" href="/favicon.png">
  
  
    <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
  
  <link rel="stylesheet" href="/m-pages/css/style.css">
  

</head>

<body>
  <div id="container">
    <div id="wrap">
      <header id="header">
  <div id="banner"></div>
  <div id="header-outer" class="outer">
    <div id="header-title" class="inner">
      <h1 id="logo-wrap">
        <a href="/m-pages/" id="logo">Hui</a>
      </h1>
      
    </div>
    <div id="header-inner" class="inner">
      <nav id="main-nav">
        <a id="main-nav-toggle" class="nav-icon"></a>
        
          <a class="main-nav-link" href="/m-pages/">Home</a>
        
          <a class="main-nav-link" href="/m-pages/archives">Archives</a>
        
      </nav>
      <nav id="sub-nav">
        
          <a id="nav-rss-link" class="nav-icon" href="/atom.xml" title="RSS Feed"></a>
        
        <a id="nav-search-btn" class="nav-icon" title="Search"></a>
      </nav>
      <div id="search-form-wrap">
        <form action="//google.com/search" method="get" accept-charset="UTF-8" class="search-form"><input type="search" name="q" results="0" class="search-form-input" placeholder="Search"><button type="submit" class="search-form-submit">&#xF002;</button><input type="hidden" name="sitesearch" value="http://mhuihui.oschina.io/m-pages"></form>
      </div>
    </div>
  </div>
</header>
      <div class="outer">
        <section id="main"><article id="post-项目过程分析" class="article article-type-post" itemscope itemprop="blogPost">
  <div class="article-meta">
    <a href="/m-pages/2017/01/10/项目过程分析/" class="article-date">
  <time datetime="2017-01-10T14:11:38.000Z" itemprop="datePublished">2017-01-10</time>
</a>
    
  </div>
  <div class="article-inner">
    
<div class="article-gallery">
  <div class="article-gallery-photos">
    
      <a class="article-gallery-img fancybox" href="https://static.hinpc.com/image/2016/201611-ipad-605420_1920.jpg!width600" rel="gallery_ciyzazat3001ds8vgngn45pnb">
        <img src="https://static.hinpc.com/image/2016/201611-ipad-605420_1920.jpg!width600" itemprop="image">
      </a>
    
  </div>
</div>

    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      项目过程分析
    </h1>
  

      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <hr>
<p>项目:<br>1、软件开发的过程:在面试时说明自己参与了某个项目的某个模块从需求到<br>设计到开发的所有过程。<br>1、需求分析(25-30%):一定客户签字认可，在合同要说明验收时以需求说明书的内容为准，<br>若有改动，需与商务另行商议。<br>成果：<br>需求说明书，具体内容如下:<br>demo(界面原型):需求的可视化<br>需求特征列表:简要的说明系统的功能，确定优先级及风险度<br>用例图:说明系统整体的功能<br>用例说明:<br>1、用流程图(活动图)说明<br>2、写用例说明文档，其有六大元素<br>功能描述<br>参与者<br>前置条件<br>后置条件<br>基本流<br>扩展流<br>2、整体设计(20-30%)<br>3、详细设计(10%可以不走这个过程)<br>4、编码(25-30%)<br>5、测试(10%)<br>2、ooa与ood的区别<br>3、面向方面与面向对象的区别<br>4、什么是模型<br>5、模型的作用<br>6、模型的原则<br>7、活动图:<br>主要用在需求分析阶段，说明某一个用例的业务流程。<br>元素如下:<br>开始<br>结束<br>状态<br>处理(动作)<br>判断<br>分支<br>汇集<br>泳道:说明不同角色所做的工作。</p>
<p>项目:<br>1、软件开发的过程:在面试时说明自己参与了某个项目的某个模块从需求到<br>设计到开发的所有过程。<br>1、需求分析(25-30%):一定客户签字认可，在合同要说明验收时以需求说明书的内容为准，<br>若有改动，需与商务另行商议。<br>成果：<br>需求说明书，具体内容如下:<br>demo(界面原型):需求的可视化<br>需求特征列表:简要的说明系统的功能，确定优先级及风险度<br>用例图:说明系统整体的功能<br>用例说明:<br>1、用流程图(活动图)说明<br>2、写用例说明文档，其有六大元素<br>功能描述<br>参与者<br>前置条件<br>后置条件<br>基本流<br>扩展流<br>2、整体设计(20-30%)<br>1、分析业务流程<br>bbs<br>登陆注册<br>浏览、发新帖、回复<br>短消息<br>用户管理<br>版块管理<br>帖子管理<br>2、根据业务设计业务实体<br>讨论区(1) 版块(0..n)<br>版块(1) 主帖(0..n)<br>主帖(1) 回帖(0..n)<br>用户(1) 帖子(主帖、回帖)(0..n)<br>用户(1) 消息(0..n)<br>3、确定项目的技术框架<br>框架设计的原则：上层依赖于下层，尽量减少下层对上层的<br>依赖，层与层之间通过接口调用。<br>轻量级的框架<br>jsp&amp;servlet&amp;dao&amp;jdbc:用的model2,速度是最快的，开发效率不高。<br>M:<br>facade&amp;dao&amp;jdbc<br>C:<br>serlvet<br>V:<br>jsp<br>通过jsp将请求发给servlet，servlet通过<br>FacadeFactory产生具体的Facade返回一个IFacade接口，通过IFacade接口<br>调用Facade的具体方法。<br>Facade通过dao的抽象工厂产生具体的工厂，通过具体的工厂产生具体的dao，<br>返回dao接口给业务层。<br>Facade执行完后将结果返回给servlet，servlet转发到下一个页面。<br>Servlet用了模板模式可以提供错误处理、事务、页面跳转的服务。<br>struts&amp;dao&amp;hibernate:速度较快，因为我们要自己实现工厂，但并不是所有的一切<br>都是返射，相对spring来说速度更快一些。<br>struts:<br>mvc，请求处理过程<br>用一个模块模式提供通用错误、事务、跳转服务。<br>将IFacade接口作业其属性，通过FacadeFactory工厂产生具体的Facade<br>返回一个Facade接口。<br>facade<br>IFacade接口<br>Facade实现类<br>FacadeFactory:facade工厂<br>dao接口作为Facade的属性，通过AbstractFactory调用具体的DaoFactory<br>产生具体的dao实例，返回dao接口。<br>dao:<br>dao<br>daoImpl<br>DaoFactory:产生daoImpl实例，返回dao接口<br>AbstractFactory:通过返射、工厂、单例产生具体的DaoFactory，返回<br>AbstractFactroy<br>hibernate<br>核心类<br>核配置文件<br>struts&amp;spring&amp;hibernate/ibatis：这是当前最通用、最快速、藕合度最低的开发方式<br>但也有一个问题spring一切都是返射，速度慢。<br>struts/hibenate/ibatis要解析xml文件、要大量用到返射，所以速度慢。<br>一般适合于中小型系统(500)，大型系统有些不适合需要调整。<br>struts已是MVC<br>spring是一个超级工厂，在spring中配置的都是实现类，在代码中得到都是接口。<br>hibenate/ibatis是o/r Mapping<br>框架结构:<br>struts:<br>mvc<br>请求处理过程<br>在spring中加入bean标签，配置具体的action,通过set方法将Facade代理<br>注入到action的IFcade接口中。<br>Facade<br>IFacade接口<br>Facade实现类<br>在applicationContext.xml配置具体的Facade类，在配置Facade的Aop服务时，<br>先配置抽象代理AbstractProxy其是TransactionProxyFactoryBean,说明装备<br>TransactionManager,说明连接点TransactionAttributes。再配置具体的<br>代理，继承于AbstractProxy，指向真实的对象。通过set方法注入将具体的<br>Dao注入到Facade的Dao接口属性中。<br>Dao<br>dao接口<br>dao的实现 extends HibernateDaoSupport/SqlMapClientSupport<br>在applicationContext.xml中配置具体的dao，向Facade返回dao接口。<br>hibernate<br>在applicationContext.xml中配置dataSource、sessionFactory,<br>通过set方法注入将sessionFactory注入到dao实现类中。<br>ibatis:<br>在applicationContext.xml中配置dataSource、sqlMapClient,<br>通过set方法注入将sqlMapClient注入到dao实现类中。<br>3、详细设计<br>对于开发能力比较强的团队，可以不做详细设计。<br>4、编码(25-30%)<br>5、测试(10%)<br>2、ooa与ood的区别<br>ooa:面向对象的分析，根据客户的业务找业务实体，与具体的技术无关，客户可以看懂。<br>ood:面向对象的设计，是ooa的全集，与具体的技术框架相结合进行设计。<br>3、面向过程与面向对象的区别<br>面向过程:<br>1、现实世界是对象，其在分析过程中是对象，<br>在设计过程不是对象而是方法与方法之间的调用,<br>容易与现实脱离，容易出错。<br>2、因为是方法与方法之间的调用，重用性不高，<br>无法达到宏观层次上的控制。<br>3、开发难、维护难、可扩展性差。<br>面向对象:<br>1、现实世界是对象，其在分析过程中是对象，<br>在设计过程还是对象<br>分析设计与现实接近，降低了开发的难度。<br>2、继承可以让概念在宏观层次重用，当层与层之间通过<br>接口或抽象类调用时，他们所依赖的不再是具体的实现<br>细节，而是宏观商业逻辑即接口、抽象类，具体的实现<br>是可以随时被替换的。<br>3、开方方便、好维护、好扩展<br>4、什么是模型<br>现实的浓缩。<br>5、模型的作用<br>1、便于分析、认识世界<br>2、便于存档、沟通<br>3、便于决策。<br>6、模型的原则<br>1、模型好坏决写系统的成败。<br>2、与现实越接近说明模型越正确。<br>3、模型不止一个，而是多个，它从不同的侧面说明现实的世界。<br>4、根据不同人的需求，模型有不同的实现细节。<br>7、活动图:<br>主要用在需求分析阶段，说明某一个用例的业务流程。<br>元素如下:<br>开始<br>结束<br>状态<br>处理(动作)<br>判断<br>分支<br>汇集<br>泳道:说明不同角色所做的工作。<br>8、类图<br>9、use-case图<br>10、时序图:在给定的时间内，对象与对象的之间交互<br>应用在详细设计阶段，通过类与类之间的交互<br>找类、找方法、验证系统的正确性。<br>元素:<br>横轴:<br>类与类之间的交互<br>纵轴:<br>时间</p>
<p>项目:<br>1、软件开发的过程:在面试时说明自己参与了某个项目的某个模块从需求到<br>设计到开发的所有过程。<br>1、需求分析(25-30%):一定客户签字认可，在合同要说明验收时以需求说明书的内容为准，<br>若有改动，需与商务另行商议。<br>成果：<br>需求说明书，具体内容如下:<br>demo(界面原型):需求的可视化<br>需求特征列表:简要的说明系统的功能，确定优先级及风险度<br>用例图:说明系统整体的功能<br>用例说明:<br>1、用流程图(活动图)说明<br>2、写用例说明文档，其有六大元素<br>功能描述<br>参与者<br>前置条件<br>后置条件<br>基本流<br>扩展流<br>2、整体设计(20-30%)<br>1、分析业务流程<br>bbs<br>登陆注册<br>浏览、发新帖、回复<br>短消息<br>用户管理<br>版块管理<br>帖子管理<br>2、根据业务设计业务实体<br>讨论区(1) 版块(0..n)<br>版块(1) 主帖(0..n)<br>主帖(1) 回帖(0..n)<br>用户(1) 帖子(主帖、回帖)(0..n)<br>用户(1) 消息(0..n)<br>3、确定项目的技术框架<br>框架设计的原则：上层依赖于下层，尽量减少下层对上层的<br>依赖，层与层之间通过接口调用。<br>轻量级的框架<br>jsp&amp;servlet&amp;dao&amp;jdbc:用的model2,速度是最快的，开发效率不高。<br>M:<br>facade&amp;dao&amp;jdbc<br>C:<br>serlvet<br>V:<br>jsp<br>通过jsp将请求发给servlet，servlet通过<br>FacadeFactory产生具体的Facade返回一个IFacade接口，通过IFacade接口<br>调用Facade的具体方法。<br>Facade通过dao的抽象工厂产生具体的工厂，通过具体的工厂产生具体的dao，<br>返回dao接口给业务层。<br>Facade执行完后将结果返回给servlet，servlet转发到下一个页面。<br>Servlet用了模板模式可以提供错误处理、事务、页面跳转的服务。<br>struts&amp;dao&amp;hibernate:速度较快，因为我们要自己实现工厂，但并不是所有的一切<br>都是返射，相对spring来说速度更快一些。<br>struts:<br>mvc，请求处理过程<br>用一个模块模式提供通用错误、事务、跳转服务。<br>将IFacade接口作业其属性，通过FacadeFactory工厂产生具体的Facade<br>返回一个Facade接口。<br>facade<br>IFacade接口<br>Facade实现类<br>FacadeFactory:facade工厂<br>dao接口作为Facade的属性，通过AbstractFactory调用具体的DaoFactory<br>产生具体的dao实例，返回dao接口。<br>dao:<br>dao<br>daoImpl<br>DaoFactory:产生daoImpl实例，返回dao接口<br>AbstractFactory:通过返射、工厂、单例产生具体的DaoFactory，返回<br>AbstractFactroy<br>hibernate<br>核心类<br>核配置文件<br>struts&amp;spring&amp;hibernate/ibatis：这是当前最通用、最快速、藕合度最低的开发方式<br>但也有一个问题spring一切都是返射，速度慢。<br>struts/hibenate/ibatis要解析xml文件、要大量用到返射，所以速度慢。<br>一般适合于中小型系统(500)，大型系统有些不适合需要调整。<br>struts已是MVC<br>spring是一个超级工厂，在spring中配置的都是实现类，在代码中得到都是接口。<br>hibenate/ibatis是o/r Mapping<br>框架结构:<br>struts:<br>mvc<br>请求处理过程<br>在spring中加入bean标签，配置具体的action,通过set方法将Facade代理<br>注入到action的IFcade接口中。<br>Facade<br>IFacade接口<br>Facade实现类<br>在applicationContext.xml配置具体的Facade类，在配置Facade的Aop服务时，<br>先配置抽象代理AbstractProxy其是TransactionProxyFactoryBean,说明装备<br>TransactionManager,说明连接点TransactionAttributes。再配置具体的<br>代理，继承于AbstractProxy，指向真实的对象。通过set方法注入将具体的<br>Dao注入到Facade的Dao接口属性中。<br>Dao<br>dao接口<br>dao的实现 extends HibernateDaoSupport/SqlMapClientSupport<br>在applicationContext.xml中配置具体的dao，向Facade返回dao接口。<br>hibernate<br>在applicationContext.xml中配置dataSource、sessionFactory,<br>通过set方法注入将sessionFactory注入到dao实现类中。<br>ibatis:<br>在applicationContext.xml中配置dataSource、sqlMapClient,<br>通过set方法注入将sqlMapClient注入到dao实现类中。<br>3、详细设计<br>对于开发能力比较强的团队，可以不做详细设计。<br>4、编码(25-30%)<br>5、测试(10%)<br>2、ooa与ood的区别<br>ooa:面向对象的分析，根据客户的业务找业务实体，与具体的技术无关，客户可以看懂。<br>ood:面向对象的设计，是ooa的全集，与具体的技术框架相结合进行设计。<br>3、面向过程与面向对象的区别<br>面向过程:<br>1、现实世界是对象，其在分析过程中是对象，<br>在设计过程不是对象而是方法与方法之间的调用,<br>容易与现实脱离，容易出错。<br>2、因为是方法与方法之间的调用，重用性不高，<br>无法达到宏观层次上的控制。<br>3、开发难、维护难、可扩展性差。<br>面向对象:<br>1、现实世界是对象，其在分析过程中是对象，<br>在设计过程还是对象<br>分析设计与现实接近，降低了开发的难度。<br>2、继承可以让概念在宏观层次重用，当层与层之间通过<br>接口或抽象类调用时，他们所依赖的不再是具体的实现<br>细节，而是宏观商业逻辑即接口、抽象类，具体的实现<br>是可以随时被替换的。<br>3、开方方便、好维护、好扩展<br>4、什么是模型<br>现实的浓缩。<br>5、模型的作用<br>1、便于分析、认识世界<br>2、便于存档、沟通<br>3、便于决策。<br>6、模型的原则<br>1、模型好坏决写系统的成败。<br>2、与现实越接近说明模型越正确。<br>3、模型不止一个，而是多个，它从不同的侧面说明现实的世界。<br>4、根据不同人的需求，模型有不同的实现细节。<br>7、活动图:<br>主要用在需求分析阶段，说明某一个用例的业务流程。<br>元素如下:<br>开始<br>结束<br>状态<br>处理(动作)<br>判断<br>分支<br>汇集<br>泳道:说明不同角色所做的工作<br>8、类图<br>9、use-case图<br>10、时序图:在给定的时间内，对象与对象的之间交互<br>应用在详细设计阶段，通过类与类之间的交互<br>找类、找方法、验证系统的正确性。<br>元素:<br>横轴:<br>类与类之间的交互<br>纵轴:<br>时间<br>11、协作图:对象与对象之间的交互，与时序图作用类似，但<br>没有进间的概念，通过序号说明先后顺序。<br>元素:<br>对象<br>交互<br>12、状态图:一个对象在不同方法的作用下状态的改变，<br>适合于面向过程开发。<br>13、构件图:说明组件与组件或层与层之间的依赖关系。<br>14、部署图:在分布式系统中说明各主机之间的关系，找出系统运行的<br>瓶颈。<br>元素:<br>节点:一个主机代表一个节点。</p>

      
    </div>
    <footer class="article-footer">
      <a data-url="http://mhuihui.oschina.io/m-pages/m-pages/2017/01/10/项目过程分析/" data-id="ciyzazat3001ds8vgngn45pnb" class="article-share-link">Share</a>
      
      
  <ul class="article-tag-list"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/m-pages/tags/编程/">编程</a></li></ul>

    </footer>
  </div>
  
    
<nav id="article-nav">
  
    <a href="/m-pages/2017/01/11/Linux安装多个JDK/" id="article-nav-newer" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Newer</strong>
      <div class="article-nav-title">
        
          Ubuntu将sun jdk替换默认的open jdk
        
      </div>
    </a>
  
  
    <a href="/m-pages/2017/01/09/设计模式/" id="article-nav-older" class="article-nav-link-wrap">
      <strong class="article-nav-caption">Older</strong>
      <div class="article-nav-title">设计模式</div>
    </a>
  
</nav>

  
</article>

</section>
        
          <aside id="sidebar">
  
    

  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Tags</h3>
    <div class="widget">
      <ul class="tag-list"><li class="tag-list-item"><a class="tag-list-link" href="/m-pages/tags/ide/">ide</a></li><li class="tag-list-item"><a class="tag-list-link" href="/m-pages/tags/linux/">linux</a></li><li class="tag-list-item"><a class="tag-list-link" href="/m-pages/tags/编程/">编程</a></li><li class="tag-list-item"><a class="tag-list-link" href="/m-pages/tags/设计/">设计</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Tag Cloud</h3>
    <div class="widget tagcloud">
      <a href="/m-pages/tags/ide/" style="font-size: 13.33px;">ide</a> <a href="/m-pages/tags/linux/" style="font-size: 16.67px;">linux</a> <a href="/m-pages/tags/编程/" style="font-size: 20px;">编程</a> <a href="/m-pages/tags/设计/" style="font-size: 10px;">设计</a>
    </div>
  </div>

  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Archives</h3>
    <div class="widget">
      <ul class="archive-list"><li class="archive-list-item"><a class="archive-list-link" href="/m-pages/archives/2017/02/">February 2017</a></li><li class="archive-list-item"><a class="archive-list-link" href="/m-pages/archives/2017/01/">January 2017</a></li><li class="archive-list-item"><a class="archive-list-link" href="/m-pages/archives/2016/12/">December 2016</a></li></ul>
    </div>
  </div>


  
    
  <div class="widget-wrap">
    <h3 class="widget-title">Recent Posts</h3>
    <div class="widget">
      <ul>
        
          <li>
            <a href="/m-pages/2017/02/10/go语言学习笔记（四)/">go语言学习笔记（四）</a>
          </li>
        
          <li>
            <a href="/m-pages/2017/02/10/hello-world/">Hello World</a>
          </li>
        
          <li>
            <a href="/m-pages/2017/01/14/go语言学习笔记（三）/">go语言学习笔记（三）</a>
          </li>
        
          <li>
            <a href="/m-pages/2017/01/13/go语言学习笔记（二）/">go语言学习笔记（二）结构体和切片</a>
          </li>
        
          <li>
            <a href="/m-pages/2017/01/12/go语言学习笔记（一）/">go语言开发环境搭建</a>
          </li>
        
      </ul>
    </div>
  </div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      &copy; 2017 hui<br>
      Powered by <a href="http://hexo.io/" target="_blank">Hexo</a>
    </div>
  </div>
</footer>
    </div>
    <nav id="mobile-nav">
  
    <a href="/m-pages/" class="mobile-nav-link">Home</a>
  
    <a href="/m-pages/archives" class="mobile-nav-link">Archives</a>
  
</nav>
    

<script src="//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script>


  <link rel="stylesheet" href="/m-pages/fancybox/jquery.fancybox.css">
  <script src="/m-pages/fancybox/jquery.fancybox.pack.js"></script>


<script src="/m-pages/js/script.js"></script>

  </div>
</body>
</html>